// Copyright 叶湘 ( weixin:yexiang841, email:yexiang841@qq.com ), Shitouren Studio. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Property/Q3D_CPPE_PropertyInit.h"
#include "Property/Q3D_CPPE_PropertyName.h"
#include "Q3D_CPPU_PropertyState.generated.h"

/**
 * 
 */
UCLASS(Blueprintable, ClassGroup = (Q3D), meta = (Tooltip = "PropertyPLIPro 属性集合类(C++)"))
class Q3D_LIB_API UQ3D_CPPU_PropertyState : public UObject
{
	GENERATED_BODY()

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_PropertyState, meta = (Tooltip = "属性的 Owner", ExposeOnSpawn = "true"))
	AActor *Ptr_A_Owner;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Q3D_PropertyState, meta = (Tooltip = "属性映射表，Key 是 PropertyName，Value 是属性"))
	TMap<EQ3D_CPPE_PropertyName, UQ3D_CPPU_PropertyPLIPro *> Map_PropertyName_To_Ptr_U_PropertyPLIPro;

public:
	UFUNCTION(BlueprintCallable, Category = Q3D_PropertyState, meta = (Tooltip = "新建属性"))
	void Q3D_F_PropertyPLIPro_Construct(const FName &name_id, EQ3D_CPPE_PropertyName enum_property_name, int32 int_min, int32 int_max, EQ3D_CPPE_PropertyInit enum_property_init, int32 int_value, UPARAM(DisplayName = "ptr_u_property_pli_pro") UQ3D_CPPU_PropertyPLIPro *&ptr_u_property_pli_pro, UPARAM(DisplayName = "string_log") FString &string_log);

	UFUNCTION(BlueprintCallable, Category = Q3D_PropertyState, meta = (Tooltip = "新建属性"))
	void Q3D_F_PropertyPLIPro_Create(EQ3D_CPPE_PropertyName enum_property_name, int32 int_min, int32 int_max, EQ3D_CPPE_PropertyInit enum_property_init, int32 int_value, UPARAM(DisplayName = "ptr_u_property_pli_pro") UQ3D_CPPU_PropertyPLIPro *&ptr_u_property_pli_pro, UPARAM(DisplayName = "string_log") FString &string_log);

	UFUNCTION(BlueprintPure, Category = Q3D_PropertyState, meta = (Tooltip = "读取属性引用"))
	void Q3D_F_PropertyPLIPro_Get(EQ3D_CPPE_PropertyName enum_property_name, UPARAM(DisplayName = "ptr_u_property_pli_pro") UQ3D_CPPU_PropertyPLIPro *&ptr_u_property_pli_pro, UPARAM(DisplayName = "string_log") FString &string_log);

	UFUNCTION(BlueprintPure, Category = Q3D_PropertyState, meta = (Tooltip = "读取属性引用和值"))
	void Q3D_F_PropertyPLIPro_GetValue(EQ3D_CPPE_PropertyName enum_property_name, UPARAM(DisplayName = "ptr_u_property_pli_pro") UQ3D_CPPU_PropertyPLIPro *&ptr_u_property_pli_pro, UPARAM(DisplayName = "int_min") int32 &int_min, UPARAM(DisplayName = "int_max") int32 &int_max, UPARAM(DisplayName = "int_value") int32 &int_value, UPARAM(DisplayName = "int_value_pro") int32 &int_value_pro, UPARAM(DisplayName = "float_min") float &float_percent, UPARAM(DisplayName = "int_percent") int32 &int_percent, UPARAM(DisplayName = "string_log") FString &string_log);
};
